<template>
	<view class="wrap">
		<view class="top"></view>
		<view class="content">
			<view class="title">欢迎注册图书商城</view>
			<input class="u-border-bottom u-m-b-40" type="text" v-model="name" placeholder="请输入用户名" />
			<input class="u-border-bottom u-m-b-40" type="text" v-model="email" placeholder="请输入邮箱" />
			<input class="u-border-bottom u-m-b-40" type="password" v-model="password" placeholder="请输入密码" />
			<input class="u-border-bottom u-m-b-40" type="password" v-model="password_comfirmation"
				placeholder="请输入确认密码" />
			<button @tap="submit" :style="[inputStyle]" class="getCaptcha">注册</button>
			<view class="alternative">
				<view class="issue" @click="$u.route({ type: 'redirect', url: 'pages/auth/login' })">已有账号？点击跳转登陆</view>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		name: 'register',
		data() {
			return {
				name: '',
				email: '',
				password: '',
				password_comfirmation: ''
			}
		},
		computed: {
			inputStyle() {
				let style = {};
				if (this.$u.test.email(this.email) && this.password && this.name && this.password_comfirmation) {
					style.color = "#fff";
					style.backgroundColor = this.$u.color['primary'];
				}
				return style;
			}
		},
		methods: {
			async submit() {
				// 1.表单验证
				if (!this.$u.test.email(this.email) || !this.password || !this.name || !this.password_comfirmation) return;
				
				if (this.password !== this.password_comfirmation) {
					this.$u.toast('请确保输入的密码一致');
					return;
				}
				
				// 2.准备提交表单的参数
				const params = {
					name: this.name,
					email: this.email,
					password: this.password,
					password_confirmation: this.password_comfirmation
				}

				// 3.请求API，执行注册，前后端交互
				const res = await this.$u.api.authRegister(params);

				// 4.注册成功，重定向到登陆页
				this.$u.toast('注册成功');
				setTimeout(() => {
						this.$u.route({ type: 'redirect', url: 'pages/auth/login' });
				}, 1000)
			}
		}
	}
</script>

<style lang="scss" scoped>
	.wrap {
		font-size: 28rpx;

		.content {
			width: 600rpx;
			margin: 80rpx auto 0;

			.title {
				text-align: left;
				font-size: 60rpx;
				font-weight: 500;
				margin-bottom: 100rpx;
			}

			input {
				text-align: left;
				margin-bottom: 10rpx;
				padding-bottom: 6rpx;
			}

			.tips {
				color: $u-type-info;
				margin-bottom: 60rpx;
				margin-top: 8rpx;
			}

			.getCaptcha {
				background-color: #ddd;
				color: $u-tips-color;
				border: none;
				font-size: 30rpx;
				padding: 12rpx 0;

				&::after {
					border: none;
				}
			}

			.alternative {
				color: $u-tips-color;
				display: flex;
				justify-content: flex-end;
				margin-top: 30rpx;
			}
		}
	}
</style>
